package baiqitun.stupro.common.service;

import baiqitun.stupro.common.exception.support.DisabledException;

/**
 * 实体可用性检查器
 * 实体包含enabled属性
 * @author kedaji
 * @param <T> 实体类
 */
public interface EntityEnabledChecker<T> extends EntityChecker<T> {
    /**
     * 检查实体是否不可用，如果不可用抛出异常
     * @param id 主键
     * @param e 异常信息
     * @throws DisabledException 资源不可用异常
     */
    void checkDisabled(String id, DisabledException e);

    /**
     * 获取可用的实体，如果不可用则抛出异常
     * @param id 主键
     * @param e 异常信息
     * @throws DisabledException 资源不可用异常
     * @return 可用的实体
     */
     T getEnabledEntity(String id, DisabledException e);
}
